# -*- coding: utf-8 -*-
#公共方法
import time
import sys
import os
import re
#要用到run_case里的连接方法
import run_case2
#sys.path.append(r'E:\PY_project\automation_practise\run_case2.py')
#检查手机是否连接成功的方法
def Reconnect():
    #重连10次不成功会直接退出脚本
    for k in range(1,10):
        try:
            new = d.info
            if len(new)>0:
                print('手机信息如下\n%s'%new)
                #判断屏幕亮屏，灭屏的话自动点亮
                if d.screen != "on":
                    print('屏幕关闭，正在点亮屏幕')
                    d.wakeup()
                    print('已点亮')
                else:
                    print('连接正常')
                break
        except:
            n=k
            print('连接失败error 尝试重连:')
            print(n)
            time.sleep(10)
            if k>10:
                print('连接失败，关闭脚本')
                sys.exit()

#截图、引发异常，结束这个用例，不引发异常报告中会显示pass
def Err_Screenshot():
    pinfo=None
    try:
        print '检查手机连接状态'
        #d.info 如果手机没有连接的话会报错。
        pinfo=d.info
        #截图、引发异常，结束这个用例，不引发异常报告中会显示pass
        t=time.strftime("%Y-%m-%d-%H-%M-%S")
        day=time.strftime("%Y-%m-%d")+'\\'
        path = os.path.split(os.path.realpath(__file__))[0]
        path = path[:-6]+'Result\\'
        if os.path.exists(path+day)==False:
            print(u'新建目录')
            os.mkdir(r'%s%s'%(path,day))
        path=path+day
        d.screenshot(path+t+'.png')
        print(u'异常截图运行')
        print u'截图目录：'+path
        print u'截图名称：'+t+'.png'
    except:
        print('手机连接失败')
        raise ValueError('手机连接失败')
    else:
        raise ValueError(u'抛出异常终止此用例')

#安装ADBKeyBoard-master输入法
def Install_input():
    print('正在安装输入法')
    #获取输入法apk路径
    path = os.path.split(os.path.realpath(__file__))[0]
    path = path[:-6]+'Data\\ADBKeyBoard.apk'
    #输入adb命令
    os.popen('adb install %s'%path)
    time.sleep(5)
    #输入设置输入法的adb命令
    os.popen('adb shell ime set com.android.adbkeyboard/.AdbIME')
    time.sleep(2)
    #检查当前输入法是否正确
    a=''.join(os.popen('adb shell dumpsys  input_method').readlines())
    b=''.join(re.findall(r'mCurMethodId.+',a))
    if b.find('adbkeyboard')==-1:
        print('输入法安装失败')
        raise ValueError('抛出异常终止此用例')
    else:
        print('输入法安装成功')
    time.sleep(2)

#使用ADBKeyBoard-master输入文字
def Input_Chinese(msg='这里输入中文'):
    #输入完成后末尾会带一到两个字符
    print '输入中文:%s'%msg
    a="adb shell am broadcast -a ADB_INPUT_TEXT --es msg '%s和.'"%msg
    os.popen(a)
    #用d.press.delete()删掉后两个字符
    time.sleep(2)
    d.press.delete()
    time.sleep(1)
    d.press.delete()
    print '输入完成'

#滑动解锁
def Slide_to_unlock():
    print('滑动解锁')
    new=d.info
    y=new['displayHeight']
    x=new['displayWidth']
    d.drag(x/2,y-30,x/2,y/2,steps=10)
    time.sleep(2)

#简单的拖动找控件
def Get_control():
    #简单的拖动找控件
    #自动滑动到控件所在页面，需要点击或其他操作，请重新找一下控件。
        def Drag():
        #把手机XY放进NEW，从底部拖到到屏幕1/2处
            new=d.info
            yy=new['displayHeight']
            xx=new['displayWidth']
            d.drag(xx/2,yy-200,xx/2,yy/2,steps=10)
        #找控件循环，如果要搜索的有很多页,可以提高range的数值
        for a in range(0,10):
            time.sleep(2)
            #这里resourceId可以换成各种控件
            #exists找到控件后返回True
            if d(resourceId="com.tencent.qrom.qweather:id/add_managercity").exists:
                print 'ok'
                break
            else:
                Drag()


#-----------------------------
#被调用后就执行连接手机
d = run_case2.Runcase.d
if __name__=="__main__":
    pass

